package entities;


import java.sql.Date;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;

import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;

@Entity
public class Factura extends EntidadBase {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column (name = "idFactura")
	private int nroFactura;
	private Date fechaEmision;
	private boolean estado;
	private float importe;
	private float descuento;
	
	@OneToOne
	@JoinColumn(name = "idRemito")
	private RemitoExterno remito;
	
	@OneToOne
	@JoinColumn(name = "idCondicionVenta")
	private CondicionVenta condVenta;
	
	@OneToMany (cascade = CascadeType.ALL)
	@LazyCollection(LazyCollectionOption.FALSE)
	@JoinColumn(name = "idFactura")
	private List<ItemFactura> items;

	public Factura(){
		items = new ArrayList<ItemFactura>();
		this.estado = false;
	}

	public int getNroFactura() {
		return nroFactura;
	}

	public void setNroFactura(int nroFactura) {
		this.nroFactura = nroFactura;
	}

	public Date getFechaEmision() {
		return fechaEmision;
	}

	public void setFechaEmision(Date fechaEmision) {
		this.fechaEmision = fechaEmision;
	}

	public boolean isEstado() {
		return estado;
	}

	public void setEstado(boolean estado) {
		this.estado = estado;
	}

	public float getImporte() {
		return importe;
	}

	public void setImporte(float importe) {
		this.importe = importe;
	}

	public float getDescuento() {
		return descuento;
	}

	public void setDescuento(float descuento) {
		this.descuento = descuento;
	}

	public RemitoExterno getRemito() {
		return remito;
	}

	public void setRemito(RemitoExterno remito) {
		this.remito = remito;
	}

	public CondicionVenta getCondVenta() {
		return condVenta;
	}

	public void setCondVenta(CondicionVenta condVenta) {
		this.condVenta = condVenta;
	}

	public List<ItemFactura> getItems() {
		return items;
	}

	public void setItems(List<ItemFactura> items) {
		this.items = items;
	}
	
	
	
	

}
